#ifndef TARGET_H
#define TARGET_H


#include "Ogre.h"
#include "Object.h"

#include "GameState.h"

class BuildingObject;
class ItemObject;
class CreatureObject;

class Target
{
    public:

        enum TARGET_TYPE
        {
            TAR_POSITION,
            TAR_OBJECT,
            TAR_CREATURE,
            TAR_BUILDING,
            TAR_ITEM,
            TAR_LEVEL_BLOCK,
            TAR_ENNEMIES,
            TAR_NOTHING
        };


        Target();
        Target(TARGET_TYPE _type);
        virtual ~Target();


        void setType(TARGET_TYPE _type);
        TARGET_TYPE getType();

        Ogre::Vector2 getPosition();
        Object* getOject();

        void setTarget(Ogre::Vector2 _position);
        void setTarget(Object* _object);


        bool isTargeting(){return m_isEmpty;}

        QueryFlags getQueryFlagsCorresponding();



    protected:
    private:

    TARGET_TYPE m_targetType;


        Ogre::Vector2 m_positionTargeted;
        Object* m_objectTargeted;

        bool m_isEmpty;



};

#endif // TARGET_H
